package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;

/**
 * 高频车分析服务
 */
public interface DubboAnalyzeHighFreqService {

	/**
	 * 根据卡口点位分析高频车并获取分析结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param page 分页
	 * @return Page &lt; HighFreqByPoIntegersDto &gt; ：包含高频车信息的 的分页集合
	 */
	public ResultPojo analyzeHighFreqByPoIntegers(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay, Page page);


	/**
	 * 根据车辆分析高频车通过的卡口并获取分析结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param page 分页
	 * @return Page &lt; HighFreqByVehicleDto &gt; ：包含高频车信息的 的分页集合
	 */
	public ResultPojo analyzeHighFreqByVehicle(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay, Page page);

	/**
	 * 导出根据卡口点位对高频车进行分析的结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; HighFreqByPoIntegers &gt; ：包含高频车信息 的集合
	 */
	public ResultPojo expHighFreqByPoIntegers(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay);
	public ResultPojo expHighFreqByPoIntegers(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay,int startIndex,int endIndex);

	/**
	 * 根据卡口点位对高频车进行分析的结果总记录数
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @return 总记录数
	 */
	public ResultPojo countHighFreqByPoIntegers(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay);


	/**
	 * 导出根据卡口点位对高频车进行分析的结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; HighFreqByVehicleDto &gt; ：包含高频车信息 的集合
	 */
	public ResultPojo expHighFreqByVehicle(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay);
	public ResultPojo expHighFreqByVehicle(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay,int startIndex,int endIndex);

	/**
	 * 根据卡口点位对高频车进行分析的结果 总记录数
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poInteger 卡口点位编码
	 * @param passFreq 最少过车次数
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @return  总记录数
	 */
	public ResultPojo countHighFreqByVehicle(String token, String licenseType, String licenseNum, String poInteger, Integer passFreq, Date startDay, Date endDay);

}
